1 排序算法

image-20191014110356530

⭐️核心代码

⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int temp;

//外层循环是排序的趟数
for (int i = 0; i < arrays.length - 1 ; i++) {

//内层循环是当前趟数需要比较的次数 arrays.length - i - 1
for (int j = 0; j < arrays.length - i - 1; j++) {

//前一位与后一位与前一位比较,如果前一位比后一位要大,那么交换
if (arrays[j] > arrays[j + 1]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
}
}
}

1 冒泡排序

算法描述:
  1. i从0开始,i与i+1比较,如果i>i+1,那么就互换
  2. i不断增加,直到i<n-1(n是数组元素的个数,n-1是数组已经最后一个元素) ,一趟下来,可以让数组元素中最大值排在数组的最后面

代码实现

image-20191014110233641

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 int temp;

//外层循环是排序的趟数
for (int i = 0; i < arrays.length - 1 ; i++) {

//内层循环是当前趟数需要比较的次数 arrays.length - i - 1
for (int j = 0; j < arrays.length - i - 1; j++) {

//前一位与后一位与前一位比较,如果前一位比后一位要大,那么交换
if (arrays[j] > arrays[j + 1]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
}
}
}

2 冒泡排序优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 public class BubbleSort2 {
//冒泡排序 a表示数组 n表示数组大小
public void bubbleSort(int[] a, int n) {
if (n <= 1) {
return;
}
for (int i = 0; i < n - 1; i++) {
//提前退出冒泡循环的标志位
boolean flag = false;
for (int j = 0; j < n - 1 - i; j++) {
//前一位与后一位与前一位比较,如果前一位比后一位要大,那么交换
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = true;//表示有数据交换
}
}
if (!flag) break;
}
}
}

3 冒泡排序细节 面试